// Proxy对象
// 用于代理对象的读写监听

const obj = {
    a: '123'
}
console.log('a' in obj) // 判断属性a是否是obj对象中的属性

const person = {
    name: 'congyang',
    age:  18
}

const personProxy = new Proxy(person, {
    get(target, property) { // 默认接受两个参数， 目标代理对象、属性名
        // 判断属性是否是对象中的属性
        return property in target ? target[property] : 'defalut' 
        // console.log(target, property)
    },
    set(target, property, value) {
        if(property === 'age'){
            if(!Number.isInteger(value)){
                throw new TypeError('is not number')
            }
        }
        target[property] = value
    }
})

personProxy.gender = false
personProxy.age = 30 
console.log(personProxy.age) // 18
console.log(personProxy.gender) // 18
// console.log(personProxy.sex) // defalut